<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // new的四个步骤
        // 1.创建一个空对象
        // 2.为空对象添加__proto__属性，将该属性指向构造函数的prototype
        // 3.将构造函数的this指向新对象
        // 4.如构造函数没有返回对象，默认返回this，也就是新对象

        // 新建构造函数
        function Person(name, age) {
            this.name = name
            this.age = age
        }
        // 函数模拟new关键字：
        function newNew(name, age) {
            var obj = {}
            obj.__proto__ = Person.prototype
            var res = Person.call(obj, name, age)
            if (typeof res == 'undefined') {
                return obj
            } else {
                return res
            }
        }
        var obj = newNew('卡莎', 22)
        console.log(obj)




    </script>
</body>
</html>